<?php

//手动遍历数组
//
//步骤：
//
//1、复位数组指针		reset()
//
//2、检查指针是否合法	获取当前指针，如果不为null就是合法的
//
//3、获取当前值			current()
//
//4、获取当前键			key()
//
//5、指针下移				next()
//
//代码实现
//$stu=['tom','berry','ketty','rose'];
//reset($stu);	//复位指针
//while(key($stu)!==null){//键合法
//    echo key($stu),'-',current($stu),'<br>';//获取键、值
//    next($stu);		//指针下移
//}
/*
0-tom
1-berry
2-ketty
3-rose
*/


//迭代器
//定义类实现迭代器接口
class MyClass implements Iterator{
    //$list属性用来保存学生数组
    private $list=array();
    //添加学生
    public function addStu($name) {
        $this->list[]=$name;
    }
    //实现接口中的复位方法
    public function rewind() {
        reset($this->list);
    }
    //验证当前指针是否合法
    public function valid() {
        return key($this->list)!==null;
    }
    //获取值
    public function current() {
        return current($this->list);
    }
    //获取键
    public function key() {
        return key($this->list);
    }
    //指针下移
    public function next() {
        next($this->list);
    }
}

//创建班级
$class=new MyClass();
//添加学生
$class->addStu('tom');
$class->addStu('berry');
$class->addStu('ketty');
//遍历班级
foreach($class as $k=>$v){
    echo "{$k}-{$v}<br>";
}
/*
0-tom
1-berry
2-ketty
*/